Bluetooth is a known wireless technology standard for exchanging data over relatively short distances using radio waves in the ISM band from 2400-2480 MHz between wireless mobile devices, such as telephones, tablets, personal digital assistants, media players, headsets, laptops, printers, modems, watches, pairs of glasses, and like mobile devices. Such a Bluetooth-enabled device has a host central processing unit (CPU) in which an operating system, e.g., Windows (trademark), is implemented. The operating system is typically embedded with a software-implemented, Bluetooth stack that supports various native Bluetooth profiles, e.g., PAN, SPP, DUN, HID, HCRP, etc., or native Bluetooth versions, e.g., Version 1.0 or Version 2.0. These Bluetooth profiles include settings to parameterize and control the behavior that Bluetooth-enabled devices use to communicate with one another. These Bluetooth versions include specifications regarding data rate and maximum data throughput. Each such Bluetooth-enabled device also has a hardware-implemented Bluetooth controller, typically provided on an integrated circuit chip that is separate from the host CPU. A Wi-Fi controller is sometimes provided on the same chip as the Bluetooth controller. The Bluetooth controller is connected to an antenna to transmit or receive the radio waves.
It is often desired to change the native Bluetooth profile by adding new features to an existing Bluetooth profile, or by substituting a new Bluetooth profile, or by changing the Bluetooth version to, for example, Version 3.0 (high-speed) or Version 4.0 (low-energy). For this purpose, a vendor-supplied, software-implemented, Bluetooth filter driver is often used to send such non-native, Bluetooth configuration data to the Bluetooth controller.
However, this data must pass through a universal serial bus (USB) port, which is the most common interface between the Bluetooth controller and the Bluetooth stack. USB provides high transmission speeds, as well as advanced power saving and management capabilities. A USB hub supplies data and power to downstream USB ports. Often, the USB hub, together with a host USB driver and a USB controller, manage the power of any device connected to its USB ports. Power can be turned on (a power-up state), or turned off (a power-down state), at any individual USB port, or group of USB ports. If no activity is detected at a USB port, e.g., no data has passed through the USB port over a certain time period, e.g., 2-10 seconds, then power to the inactive USB port can be selectively suspended in the power-down state to conserve power usage.
A problem with the existing Bluetooth architecture is that the USB port may be in the power-down state when the filter driver needs to send data to the Bluetooth controller. If the USB port is in the power-down state, then the data will fail to reach the Bluetooth controller. The filter driver is configured as a non-power policy owner and is, therefore, inoperative for directly changing the state of the USB port. The filter driver can track the state of the USB port, but cannot modify it. There are no current standards or methods for a filter driver to become a power policy owner, and thereby modify the state of the USB port.
The art has proposed the use of upper level, additional hardware components, as well as additional software abstraction layers, to execute vendor-specific commands that bypass the filter driver to modify the state of the USB port. Yet, these commands are specific and customized to each Bluetooth controller, and are not universal across different Bluetooth controllers made by different manufacturers.
Accordingly, there is a need to avoid the need for, and the expense of, additional hardware components and software layers, and to employ the filter driver itself in changing the state of the USB port despite the fact that the filter driver is not configured as a power policy owner.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions and locations of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
The method and system components have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.